﻿//#region ONUR KARADENİZ
//// murat onur  Delegeler
//// Delegeler   DelegeKullanimi.cs
//// 201301025:21 PM
//// 2013  01
//// 02 02
//#endregion

//using System;

//namespace Delegeler
//{
//    public class UsbPort
//    {
//        public enum UsbDurum
//        {
//            Acik, Kapali
//        }
//        //Aktif usb nesnesi portdurumunu belirten alan tanimi

//        private UsbDurum _durum = UsbDurum.Kapali;
//        //nesne tarafından usb porta bağlanması veya port bağlantısının kapatılması durumunda haberleşme için
//        public delegate void UsbDurumEventHandler(UsbDurum status);

//        private UsbDurumEventHandler _durumdelegesi = null;
//        public void Ac()
//        {
//            _durum = UsbDurum.Acik;
//            //durumdelegesi isimli alana gecerli bir değer atanmış ise bu delegeyi çağır
//            if (_durum != null)
//                _durumdelegesi(UsbDurum.Acik);

//        }
//        public void Kapat()
//        {
//            _durum = UsbDurum.Kapali;
//            //durumdelegesi isimli alana gecerli bir değer atanmış ise bu delegeyi çağır
//            if (_durum != null)
//                _durumdelegesi(UsbDurum.Kapali);
//        }
//        /// <summary>
//        /// Metodun Kullanım amacı  nesne durum değiştiğinde haberdar olabilmek amacıyla  istediğimiz metodun kaydını yaptırabilmesidir
//        /// </summary>
//        public void DurumEventHandlerEkle(UsbDurumEventHandler handler)
//        {
//            _durumdelegesi += handler;
//        }
//        public void DurumEventHandlerCikar(UsbDurumEventHandler handler)
//        {
//            _durumdelegesi -= handler;
//        }

//    }


//    public class DelegeKullanimi
//    {
//        /// <summary>
//        /// UsbPort nesnesinin durumu değiştiğinde yeni durumu kullanıcıya göstermek amacıyla kullanılan metotdur
//        /// </summary>
//        static void DurumGoster(UsbPort.UsbDurum durum)
//        {
//            Console.WriteLine("Usb PortDurumDeğişti");
//            Console.WriteLine("Yeni Durum {0}", durum);
//        }
//        static void DurumLogla(UsbPort.UsbDurum durum)
//        {
//            Console.WriteLine("Usb PortDurumu  kayıt edildi");
//            Console.WriteLine("kaydedilen Yeni Durum {0}", durum);
//        }
//        static void Main(string[] args)
//        {
//            UsbPort port = new UsbPort();
//            port.DurumEventHandlerEkle(DurumGoster);
//            port.DurumEventHandlerEkle(DurumLogla);
//            port.Ac();
//            port.Kapat();

//            Console.ReadLine();

//        }
//    }
//}